from typing import List,Dict
import SqliteHelper as sqlhp
from enums import OptionEnums

class GrouperDB:
    def __init__(self):
        self.db_path =OptionEnums.DB_FILE_PATH.value
        self.db = sqlhp.Connect(self.db_path)
    
    def medical_record_query(self,fields:List[str]=[],wheres:str='',limit:int=1000)->List[Dict]: 
        '''
        从数据库查询病案信息.
        :param fields: List[str].查询字段，默认为空，表示查询所有字段。
        :param wheres: str.查询关键字，可以是姓名、身份证号、住院号、病案号等。应该是sql语句的where子句，但不包括“where”本身.
        :param limit: int.限制返回结果的数量，0表示不限制。
        :return: 返回格式[{},{}] 或 [].返回查询结果的列表。数据库查询发生异常时返回空list.
        '''
        try:
            ret=self.db.table('medicalrecord').where(wheres).field(*fields).find(limit)
        except:
            ret=[]
        return ret    

    def query_drgs_one(self,drgs_code:str)->Dict:
        '''
        :param: drgs_code: 输入具体DRGS组的编码
        :return: 返回Dict，数据库查询发生异常时返回空{}.
        根据DRGS组编码查询DRGS组信息，返回DRGS组的名称、权重、等级系数、平均值等信息。
        '''
        try:
            ret=self.db.table('dz_drgs').where(f'CODE="{drgs_code}" and DELETED IS NULL').field('CODE','NAME','WEIGHTS','RATIO','AVERAGE').find()
        except :
            ret = [{}]
            print(f'查询DRGS组{drgs_code}信息失败')
        if ret:
            return ret[0]
    

